Method and system for testing rambus memory modules

ABSTRACT

A system and method for testing a RIMM loaded with RDRAM integrated circuits generates and reads test transaction data with a test transaction engine, such as a microprocessor-based memory tester. A RIMM adapter interfaces with the test transaction engine and the RIMM under test to communicate test data, including test write, address, control and read data. A comparison of test read data returned to the test transaction engine from the RIMM against predetermined values allows a determination of the operational status of the RIMM. The RIMM adapter is embodied as an ASIC with plural FIFO circuits interfaced between the test transaction engine and a channel controller and RAC. The FIFOs reconcile differences in timing between generation and return of test data and demands by the RAC and channel controller. Separate read and write data paths between the test transaction engine and ASIC support improved rates of data transfer. The test transaction engine provides full speed test transactions by using instruction data to generate test data with FPGAs.

RELATED APPLICATIONS

This application claims priority from U.S. Provisional Application Ser. No. 60/097,894, filed Aug. 26, 1998 entitled “Memory System Testing and Method,” by Paul Hunter and assigned to Tanisys Technology, Inc.

TECHNICAL FIELD OF THE INVENTION

This invention relates in general to the field of testing electronic devices, and more particularly to testing memory modules.

BACKGROUND OF THE INVENTION

Memory integrated circuits are typically assembled on memory modules for incorporation into computing devices, such as personal computers. Before a memory module is incorporated in a computing device, the module and memory integrated circuits assembled on the module are usually tested for faults. For instance, personal computer manufacturers typically purchase memory modules from subcontractors. The subcontractors assemble the memory integrated circuits on the memory modules according to the manufacturers' specifications, and then test the modules to ensure their proper operation before shipping the modules to the manufacturer. Computer manufacturers expect high reliability for the memory modules. Thus, subcontractors who assemble memory modules generally must test the assembled modules to meet predetermined specifications of the computer manufacturer with a high degree of reliability.

Conventional memory integrated circuits include DRAM, SDRAM, and SGRAM integrated circuits that operate at speeds of up to 100 megahertz. Recently, a new type of integrated memory circuit known as a direct RAMBUS integrated circuit (RDRAM), has been introduced that is capable of operating at much higher speeds, such as a clock speed of 400 megahertz, with data transactions occurring on both edges of the clock signal to provide an effective device speed of 800 megahertz. To obtain these improved operating speeds, RAMBUS integrated circuits are loaded on a specially designed RDRAM integrated memory module, known as a RAMBUS In-Line Memory Module (“RIMM”). RIMMs include a Direct RAMBUS ASIC channel cell (RAC) to support communications between the RIMM and another RAC located in a computing device. A RAC is a logical to physical interface that multiplexes and demultiplexes 144 bit wide datums with an 18 bit wide RAMBUS channel. Cooperating RACs communicate data over the 18 bit wide RAMBUS channel by exchanging control and address information in unique packetized formats. A RAMBUS Memory Controller (“RMC”) supports data transfers with a RAC by taking simple high-level commands and data to create simpler commands formatted for the RAC and by scheduling for data transmittal or retrieval.

For instance, a RMC may receive or transmit data at a 100 MHz clock rate. In one clock cycle, the RMC may receive 40 bits worth of information, including 35 address bits, 4 command bits and 1 packet length bit, along with 144 bits worth of data to be written to a RIMM. The RMC reformats the 40 address/command/length bits into a sequence of commands to the RAC with each command having 64 bits of packet information and 12 bits of scheduling information. The 144 bits of data are passed unchanged to the RAC. The RAC then transmits this information to a RAC of one of the Direct RDRAM chips in the RIMM with the 64 bits of packet information broken down into 8 sets of 8 bits and the 144 bits of data broken down into 8 sets of 18 bits. The transfer between RACs is clocked out on the leading and trailing edges of a 400 MHz clock to allow all eight sets of data to be transmitted within a 10 ns window that matches the 100 MHz system bus clock.

The use of RDRAM integrated circuits loaded on a RIMM allows a substantial increase in the rate at which data is exchanged for use by a processor of a computing device. However, the increased speed at which RIMMs operate makes it especially important to ensure that no faults exist on the RIMMs before the RIMMs are used in a computing device. At the present time, commercial microprocessor bus systems do not exist that will support a RAMBUS channel operating at higher than 100 megahertz.

Faults associated with a RIMM can be introduced in a number of different manners. A fault can exist in the RDRAM integrated circuits and RIMM printed wire board (PWB) before assembly, or can be introduced during assembly. For instance, RIMM PWBs can have PWB faults such as open or shorted traces due to under plating or over plating, excessive warpage, and out of tolerance electrical characteristics. RDRAM faults can include open or shorted pins due to lead frame bonding flaws, inoperable nodes internal to the device, and excessive sensitivity to signal patterns, temperature variations, voltages, and/or internal node states. Faults introduced during assembly of a RIMM can include incorrect installation of parts, open or shorted signals through the use of excessive or insufficient solder, signal path contamination resulting in high pin leakage, ESD damage resulting in high pin leakage, and damaged pin drivers or input buffers.

Several conventional testers are available for testing memory modules. The simplest type of memory tester is a microprocessor-based tester. Microprocessor-based testers essentially act as a mother board to pass microprocessor-generated test data to a module and read the test data sent back from the module. The memory module is tested by comparing the written and read data. Although microprocessor-based testers are simple to build and use, they are generally slow in operation and incapable of performing more complex types of tests. Such testers usually feature commodity memory controllers as the interface between the microprocessor and the memory module.

Most other types of conventional memory testers are hardware-enhanced. Hardware-enhanced testers provide more rapid testing of memory modules by using specialized hardware to generate test accesses and verify test data. One such hardware-enhanced memory testing system is a vector-based system. Vector-based systems use a microprocessor to generate test data, and then store the test data in memory until the data is sent to the module under test. A key disadvantage to vector-based systems is that they generally require large amounts of memory for storing test data before the data is sent to the module under test.

Another hardware-enhanced method for testing memory modules is through the use of an interface that provides test data to the module under test. For instance, the SIGMA testing systems produced by Tanisys Technology, Inc. create test data with algorithms and incorporate specialized controllers to interface the algorithmically-created data with the module under test. A microprocessor supervises the operation of the specialized controller, which in response generates and writes predetermined data to the memory module through an interface, and then reads back the data and compares it against the written data to ensure that the memory module is operating properly.

Many of the hardware-enhanced memory testers use pin drivers. Pin drivers and receivers interfaced with the memory module send signals to and receive signals from the memory module under test. Conventional pin drivers are frequently used to test a variety of integrated circuits, including microprocessors, where operational parameters such as input voltage range, output voltage range, power supply range, and signal timing vary widely between device types. Pin-driver based testers generally incorporate expensive and complex hardware and software that determine whether the output signals generated are appropriate for a given suite of test signals. Conventional pin drivers are expensive and their use to test memory devices is generally considered overkill since memory devices typically operate over a narrow range of voltages and speeds, such as the 0.8 voltage swing for RDRAM signals, whereas pin drivers are designed to operate over a large voltage range, such as 7 to −5 volts. In addition, conventional pin drivers are typically housed in large packages with high input voltages that generate considerable amounts of heat, frequently requiring cooling by fluids.

A number of difficulties exist in attempting to use conventional memory testing systems to test RIMMs. One difficulty is presented by the rapid operating speeds of RIMMs. For instance, conventional 100 megahertz memory devices and busses cannot exchange data at the full operating rate of a RIMM. Although pin-driver systems can present data to a RIMM at full operating speeds, pin driver systems are expensive and difficult to use.

Another difficulty is converting data generated by conventional testing systems into a format that is readable by a RIMM. For instance, RIMMs typically have 8 control lines that carry packetized control information in 64 bit packets. Further, RIMMS have an 18 bit wide RAMBUS channel with occupancy of the channel dependent upon prior and pending channel activity.

Another difficulty is the implementation of testing algorithms and sequences that test the various RIMM configurations and RIMM transaction sequences under worst-case test conditions.

SUMMARY OF THE INVENTION

Therefore a need has arisen for a memory testing system and method which will support inexpensive testing of RIMMs with at-speed test data.

A further need has arisen for a memory testing system and method which maintains full utilization of a RAMBUS channel to test the RIMM at full operating speeds.

A further need has arisen for a memory testing system and method which supports testing of a variety of RIMM configurations under a variety of test conditions.

In accordance with the present invention, a memory testing system and method is provided that substantially eliminates or reduces disadvantages and problems association with previously developed memory testing systems and methods. A RIMM adapter accepts test data for transfer to and from a RIMM to allow evaluation of the RIMM's operation.

The RIMM adapter includes an application specific integrated circuit (ASIC) having a RAC that multiplexes and demultiplexes test data with a RAMBUS channel. The RAMBUS channel is controlled by a channel controller located on board the ASIC in communication with the RAC. The channel controller writes and reads data from one or more first-in-first-out (FIFO) circuits also located on board the ASIC. The FIFOs form the interface between the ASIC of the RIMM adapter and a test transaction engine. In one embodiment, the test transaction engine is a hardware-enhanced based memory tester.

In another embodiment, a test transaction engine located on the RIMM adapter generates and compares test data based on instructions provided to processing circuits, such as field programmable gate arrays. A sequencer in communication with write data generate, address/command generate and read data compare engines supports transfer of test transaction data between the FIFOs and the test transaction engine. The FIFOs allow the RAC to provide the RIMM data transactions at full operating speed. Registers located on the ASIC of the RIMM adapter are in communication with the channel controller and RAC to allow modifications of the operational characteristics of the channel controller and RAC to support control of channel drive strengths and timing. A parametric measurement unit (PMU) and a load unit interface with the RIMM to provide analog testing signals and simulated loads.

Instructions for test data transactions are provided by a host computer in communication with the test transaction engine. The instructions are stored in a SRAM, and identify the type of transactions to be performed with the RIMM. A sequencer communicates with the SRAM and with the host computer, a read compare engine, a write generate engine, and an address command generate engine. The sequencer supplies addresses to the SRAM in a user defined order to have the write generate and address command generate engines generate both transaction address commands and test write data for transfer to the RIMM, or to have the read compare engine verify data returned from the RIMM. Instructions from the SRAM direct the sequencer to modify the address, test write data, and read compare data after a transaction is issued to support a high data flow rate to the RIMM.

The read compare engine and write generate engines have separate data paths for communicating with the RIMM adapter ASIC. The channel controller of the ASIC accepts data from the write generate engine through a write FIFO for transmission to the RIMM as the RAMBUS channel is available, and provides data received from the RAMBUS channel to a read FIFO for transmission to the read compare engine. The read compare engine compares data received from the RIMM with expected data values and issues status results back to the sequencer and host computer.

In one embodiment, the read compare engine, write generate engine and address command generate engine are field programmable gate arrays (FPGAs), having a bank of registers sharing a single arithmetic logic unit to provide interleaved accesses that help ensure uninterrupted data flow to and from the RIMM.

In another embodiment, the RIMM adapter ASIC includes a bypass circuit that allows direct communication between the test transaction engine and the RAC loaded on the ASIC. The bypass mode allows direct communication of test transaction data from the tester to the RAC without processing by the channel controller loaded on the ASIC. Thus, for instance, the test transaction engine may provide 64 bit commands and 144 bit data directly to the RAC on the ASIC to test failure modes in the field with a logic analyzer.

The present invention provides a number of important technical advantages. One important technical advantage is that the RIMM adapter implements transaction sequences for testing a RIMM at full speed when supplied with transaction commands issued by lower-speed testing engines. For instance, 100 megahertz, 144 bit datum transactions are provided to the 18 bit RIMM channel through the RIMM adapter to facilitate full control of transaction sequences. Further, the transactions are not constrained by microprocessor or memory controller implementations.

Another important technical advantage of the present invention is that full utilization of the RIMM channel is maintained. The RIMM channel is tested at full speed, such as its 800 megahertz operating speed, by transactions provided through the RIMM adapter. Separate read and write paths provide double the speed of a single read and write path and avoids waiting for host bus turnaround. Further, by locating a memory controller on board an ASIC instead of in the test engine, and providing test data through FIFO circuits before assigning the test data to memory channels, the time for transferring data to the RIMM is reduced.

Another advantage of the present invention is that it supports a variety of RIMM configurations tested under a variety of conditions. The channel controller supports control of channel drive strengths and timing to adjust data and clock skew. For instance, the channel controller allows testing with different numbers of RDRAM parts loaded on a RIMM, and with delays in clocking rate that may be associated with changes in bus length. The load unit simulates operational conditions to ensure the RIMM meets worst case test conditions, including simulation of multiple RIMMS loaded on a RAMBUS channel.

Another important technical advantage of the present invention is that the test transaction engine may communicate directly with the RAC through the bypass circuit. By configuring the ASIC so that the channel controller is bypassed, all possible memory access methods for talking to the RIMM may be utilized, which allows for the testing of additional sequences of RAC commands that may cause failures.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete understanding of the present invention and advantages thereof may be acquired by referring to the following description taken in conjunction with the accompanying drawings in which like referenced numbers indicate like features and wherein:

FIG. 1 depicts a block diagram of a RIMM adapter interfaced with a test transaction engine;

FIG. 2 depicts a block diagram of a RIMM adapter and test transaction engine in a stand-alone, contiguous-unit configuration;

FIG. 3 depicts a block diagram of an address command generate engine;

FIG. 4 depicts a block diagram of a read compare engine;

FIG. 5 depicts a block diagram of an address crossbar switch;

FIG. 6 depicts a channel controller bypass circuit;

FIG. 7 depicts a block diagram of a RIMM tester in a channel controller bypass configuration; and

FIG. 8 depicts a flow diagram of a memory testing sequence.

DETAILED DESCRIPTION OF THE INVENTION

Preferred embodiments of the present invention are illustrated in the FIGURES, like numeral being used to refer to like and corresponding parts of the various drawings.

Hardware-enhanced memory testing systems provide inexpensive but accurate testing of memory modules. For instance, the SIGMA memory testing system sold by Tanisys Technology, Inc. accepts user-specific testing sequences that support the running of a predetermined series of read and write cycles on a memory module to ensure that the memory module operates correctly. Hardware-enhanced memory testing systems support full speed operational testing of conventional memory, such as 100 MHZ SDRAM, DRAM and SGRAM, by using commodity high speed interfaces which operate at 100 MHZ. However, conventional hardware-enhanced memory testing systems are not able to directly interface with RIMMs having RDRAM integrated circuits at full operational speeds due to the unique data format used by RIMMs and due to the rapid operating speeds at which data is transferred by RIMMs.

Referring now to FIG. 1, a block diagram of a RIMM adapter 10 is interfaced with a test transaction engine 12 by an adapter connector 14. RIMM adapter 10 and test transaction engine 12 could alternatively be interfaced across a distance by conventional connectors and cables. RIMM adapter 10 provides an interface to accept test transaction data from test transaction engine 12 for testing a RIMM loaded in a device under test (DUT) adapter 26. Adapter connector 14 is a 300 pin connection that supports two separate data paths between RIMM adapter 10 and test transaction engine 12. Thus, a write data path 15 provides up to 96 bits of test write data, address and control data instructions from test transaction engine 12 to RIMM adapter 10, and a separate read data path 17 accepts up to 160 bits of test read data from RIMM adapter 10 to test transaction engine 12. The use of separate write and read data paths effectively doubles the amount of data that can be transferred between RIMM adapter 10 and test transaction engine 12.

Test transaction engine 12 is a hardware-enhanced memory test system, such as the SIGMA 3 memory test system sold by Tanisys Technology, Inc. The Sigma 3 memory test system is operable to test standard memory modules loaded with up to 160 data bit SRAM, DRAM or SGRAM that generally operate at speeds of up to 100 megahertz.

Test transaction engine 12 provides a user interface, such as a personal computer 24 with a 200 MHz processor. Personal computer 24 communicates with a 200 MHz RISC processor 22 loaded on test transaction engine 12, to accept test inputs and display test results. For a RIMM under test on DUT 26 of RIMM adapter 10, test transaction engine 12 provides RIMM adapter 10 with power through programmable power source 19. Test transaction engine 12 also provides RIMM adapter 10 with access test address and control data and test write data through address control engine 16, and with read compare functionality through data engine 18. Address control engine 16 generates the access test address and control signals that specify the location in the RIMM to which test data is written and from which test data is read. Address control engine 16 also provides instructions for the creation of test write data for transfer to the RIMM, and creation of read compare data for comparison with test data read from the RIMM. Data engine 18 generates test data for comparison with read test data from the RIMM, enabling a comparison of the read test data against expected results. If data from the RIMM does not match expected results, data engine 18 identifies the error for display to the user.

Other test signals provided by test transaction engine 12 include signals provided to parametric measurement unit (PMU) 20. PMU 20 includes circuitry to perform current leakage, DC voltage and resistance measurements of the RIMM. A serial interface 23 with RISC processor 22 supports initialization of a RIMM for accepting test transactions. A clock 21 provides timing signals for coordination of data transfers. Processor 22 interfaces with a personal computer 24 to accept test instructions and direct the operation of the test by test transaction engine 12.

RIMM adapter 10 acts as a docking adapter to supply a RIMM loaded in DUT adapter 26 with test data in a RAMBUS format at 800 MHZ operating speed through a RAMBUS channel 28. Essentially, RIMM adapter 10 operationally converts 144-bit wide 100 MHZ test data generated by test transaction engine 12 to supply 18-bit wide 800 MHZ test data to RAMBUS channel 28, and converts 18-bit wide 800 MHZ test data received from a RIMM in DUT 26 into 144-bit wide 100 MHZ test data for evaluation by test transaction engine 12.

Test data is provided to and received from RAMBUS channel 28 by an application specific integrated circuit (ASIC) 30. ASIC 30 includes a RAC 32, which is defined by the RAMBUS Corporation standards, a RAMBUS channel controller 34 in communication with RAC 32, and plural FIFO circuits 36, 38 and 40, in communication with RAMBUS channel controller 34. RAC 32 accepts test write data from channel controller 34 and formats the test write data for transfer to a RIMM via RAMBUS channel 28. RAC 32 also accepts test read data from a RIMM via RAMBUS channel 28 and formats the test read data for transfer to test transaction engine 12 through channel controller 34. Channel controller 34 controls the flow of data through RAC 32 as RAMBUS channel 28 is available. A direct RAMBUS clock generator 31 communicates with clock 21 of test transaction 12, control circuit 48 of ASIC 30 and a configuration circuit 33 of ASIC 30, enabling alignment of clock signals of test transaction engine 12 and ASIC 30. Configuration circuit 33 includes registers to store data for enabling alternative configurations of RAC 32 and channel controller 34, such as clock control modes.

A read FIFO 36 accepts test read data from a RIMM in DUT 26 through controller 34 and provides the test read data to data engine 18 for comparison with expected results. A write FIFO 38 accepts data from a write data engine 42 and provides the data through RAC 32 to RIMM DUT 36. Thus, read FIFO 36 and write FIFO 38 provide read and write 144 bit data paths with ASIC 30, effectively doubling the transaction speed at which ASIC 30 can process 144 bit test write and test read datum.

An address cross-bar circuit 44 interfaces with address control engine 16 and with an address FIFO 40 to form contiguous address space from five separate fields, enabling a variety of RIMM configurations to be tested and to optimize test address sequencing. Address cross-bar circuit 44 accepts 35 address lines from address control engine 16 and outputs the 35 address lines to address FIFO 40. A control interface circuit 46 communicates with a control circuit 48 of ASIC 30 to provide control information for supporting time-aligned address and data information during RIMM transactions. Control interface circuit 46 includes registers to support transfer of miscellaneous control logic, such as control of isolation relays 50, which enable analog measurements. Control circuit 48 provides ASIC 30 with internal control logic based upon data received from control interface 46. For instance, control circuit 48 provides control of data paths in ASIC 30 for loading and updating data in FIFOs 38 and 40, and transfer of data from FIFOs 38 and 40 to RAC 32 through channel controller 34.

Analog measurements of a RIMM loaded in DUT 26 are performed by PMU 20. Isolation relays 50 support electrical isolation of DUT 26 from other circuits on RIMM adapter 10 when PMU 20 performs analog measurements. PMU 20 includes a programmable current source and sink, a programmable voltage source, and a differential voltage analog-to-digital converter to perform current leakage, DC voltage and resistance measurements on a RIMM loaded in DUT 26.

A load circuit 52 is provided on RAMBUS channel 28 to attenuate channel signals for altering the electrical characteristics of RAMBUS channel 28 by, for instance, degrading the channel signal. For instance, load circuit 52 can vary the capacitance of RAMBUS channel 28 to subject a RIMM in DUT 26 to various test conditions, can simulate the effect of a second device interfaced with RAMBUS channel 28, and can simulate increased trace length of the bus. A termination circuit 53 supplies the RAMBUS-specified electrical termination of signals of channel 28.

Referring now to FIG. 2, a block diagram depicts a stand-alone configuration of RIMM adapter 10 that is operationally independent of a separate hardware-enhanced test system. Test transaction engine 12 interfaces with a personal computer 24 for accepting user inputs and displaying test results, and also interfaces with ASIC 30. Test transaction engine 12 dispatches transactions specified in instruction SRAM 54 to DUT 26 through ASIC 30, and verifies data resulting from those transactions.

Test transaction engine 12 includes instruction SRAM 54, a sequencer 56 and function specific blocks including PMU 20, read compare engine 58, write generate engine 60, and address control generate engine 62. Instruction SRAM 54 accepts instructions loaded from personal computer 24 for use by transaction engine 12. Sequencer 56 communicates with personal computer 24 and instruction SRAM 54 to supply addresses to instruction SRAM 54 in a user-defined order. Instruction SRAM 54 provides instruction data to write generate engine 60 and address control generate engine 62 to generate desired transaction address, commands and write data for transfer to ASIC 30. Instruction data from instruction SRAM 54 also provides instruction data to read compare engine 58 enabling read compare engine 58 to verify transaction read data received from ASIC 30. Instruction data from instruction SRAM 54 specifies the type of transaction that will be issued to DUT 26. In addition, instruction data stored in instruction SRAM 54 directs sequencer 56 to modify the next address issued to instruction SRAM 54, and specifies how the test address, test write data and test read compare data are modified after a transaction is issued.

Instruction data from instruction SRAM 54 includes address generation instructions for address control generate engine 62. The address generation instructions direct address control generate engine 62 to supply 35 bits of test address data in five fields to ASIC 30, with the fields corresponding to two column addresses, a row address, a bank address, and a device address. In addition, the instruction data directs address control generate engine 62 to issue a nominally 6 bit wide transaction command. Write generate engine 60 supplies either one or two 144 bit datums for each transaction command. In this way, the sequencer 56, address command generate engine 62 and write generate engine 60 provide a full speed data stream to facilitate full utilization of RAMBUS channel 28, with full control of transaction sequences issued to DUT 26 without constraint by microprocessor or memory controller implementations of test transaction engine 12.

Read compare engine 58 receives instruction data from instruction SRAM 54 enabling comparison of 144-bit transaction read data received from ASIC 30 with expected values based on the nominally 6-bit wide transaction command provided by address command generate engine 62. Read compare engine 58 issues results for the comparison to sequencer 56 and personal computer 24, enabling a determination of the operational status of a RIMM in DUT 26. Read compare engine 58 includes a transaction command FIFO to account for access latencies of DUT 26 while performing reads. The FIFO of read compare engine 58 maintains a transaction command until the transaction to DUT 26 associated with the command is completed.

ASIC 30 includes address control FIFO 52 in communication with address control generate engine 62 and channel controller 34. Channel controller 34 maintains the status of active transactions with DUT 26 and the operational status of RDRAM devices loaded on a RIMM in DUT 26. Channel controller 34 extracts transaction address and control commands from address control FIFO 52, when RAMBUS channel 28 is available. A write FIFO 38 is in communication with write generate engine 60 and channel controller 34 so that, in the case of write transactions, up to 288 bits of write data can be transferred from write FIFO 38 by channel controller 34 when RAMBUS channel 28 is available. Read FIFO 36 is in communication with read compare engine 58 and channel controller 34 to allow channel controller 34 to load read transaction data returned from completed read transactions of DUT 26. Channel controller 34 communicates with RAC 32 and controls the transfer of data from and to RAC 32 through channel 28.

Read FIFO 36, write FIFO 38 and address command FIFO 52 form the interface between channel controller 34 of ASIC 30 and transaction engine 12. ASIC 30 provides a path by which reads and writes initiated through sequencer 56 can be accomplished. Status registers 64 internal to ASIC 30 allow test transaction engine 12 to modify operational characteristics of channel controller 34 and RAC 32. ASIC 30, with Direct RAMBUS clock Generator (DRCG) 31 also implements RAMBUS channel input and output differential clocks and serial interface with channel clock circuit 66.

Referring now to FIG. 3, a block diagram of address control generate engine 62 is depicted in a field programmable gate array (FPGA) embodiment. Address control generation engine 62 includes five logic blocks that accept predetermined transaction instructions from a user and provide test address and test control data to RIMM adapter 10. A bank block 70 provides 5-bit bank address data generated with a bank arithmetic logic unit (ALU) 72. Four bank registers 74 are selectable on a real-time basis for pipelined generation of DUT test bank addresses. A row block 76 provides 12-bit row addresses generated by a row ALU 78 and output by ROW register 82. Row block 76 includes a row comparator 80 and an end register 82 for determining when the final row address is generated. A column A block 84, including a column A ALU 86 and COLA register 90, and a column B block 92, including a column B ALU 94 and COLB register 96, generate 6-bit test column addresses. Column A comparators 88 and end registers support detection of two column address termination conditions. Hold registers 98 provide value storage capability for row block 76, column A block 84 and column B block 92. The fifth block of address control generation engine 62 is block 100, which provides five bits of device test with a device address with a device ALU 102 and four device address registers 104.

The logic blocks of address command generation engine 62 provide algorithmically-determined addresses to a RIMM on a per-access basis. The blocks accept instructions specified by a user and allow modification of the address patterns in accordance with a test algorithm without respect to actual address values. Registers associated with the blocks store user-determined address patterns following operations by the ALUs pending transfer of the user-supplied addresses to the RIMM. The four bank address registers 74, device registers 104, column address bank 62 and column address bank 92 support storage of multiple instances of addresses to provide full speed multiple device transactions with the RIMM. For instance, the use of four registers for bank and device addresses allows intermingling of up to sixteen transactions to different addresses while accessing a RIMM. The use of multiple registers allows interleaved access of unique addresses to multiple devices on a RIMM, while also allowing multiple banks to be accessed in a single device. To accomplish interleaved access, a 2-bit field selects one of the four registers, and another 2-3 bit field selects the ALU operation to be performed on the selected register at the next clock edge. The register select field can be selected in advance of the operation selection by one selection cycle, allowing sufficient time to select the register and set up the value in that register to the ALU.

Referring now to FIG. 4, a block diagram depicts a read compare engine 58 embodied as a FPGA. Read compare engine 58 includes circuits functionally equivalent to those found in write generate engine 60 in order to facilitate the comparison of data returned from DUT 26 to data written to DUT 26 during an earlier transaction that was generated by write data generation engine 60. Write generate engine 60 receives instructions by a sequencer or personal computer that modify hold registers 110 and offset register 112 for generating test write data with ALU 114. The test write data is provided to value registers 116 for transfer to a RIMM or, when instantiated inside of the read compare engine 58, for use to compare against test read data received from a RIMM. Mask circuit 118, compare circuit 120 and error circuit 122 provide a comparison between test write data and test read data to detect differences that indicate an error with the RIMM that provided the test read data.

Referring now to FIG. 5, a block diagram of address cross-bar switch 44 is depicted. Address cross-bar switch 44 eliminates unused bits from inputs A00 to A34, thus improving test efficiency by mapping address bits to channel controller 34 in contiguous fields. Address cross-bar switch has thirty-five inputs A00 through A34 and thirty-five outputs Ynn. Each input is provided to thirty-five address logic blocks 45 for each output Ynn. At most one logic block 45 associated with each output Ynn is selected, determining which input is gated to that output Ynn. Address cross-bar switch 44 can also reduce test time by simulating a vector-based test method and can sequence a given test data through a series of addresses by mapping address lines to different banks or devices on a RIMM under test. The sequencing of addresses enhances test efficiency with increased utilization of a channel of a RIMM under test and may also assist in the isolation of certain internal RIMM fault modes.

Referring now to FIG. 6, a channel bypass circuit is conceptually depicted that supports additional testing of a RIMM under test. Address/command FIFO 40 interfaces directly with channel controller 34, or alternatively, interfaces directly with RAC 32 through a bypass circuit 53. Bypass circuit 53 allows a user to directly access RAC 32, enabling a user to send packets of test data to RAC 32 for performing additional tests not supported by channel controller 34. For instance, bypass circuit 53 allows a user to arrange certain bits sent to a RIMM and to perform tests of the low power mode of a RIMM. More thorough testing of a RIMM can be accomplished since bypass circuit 53 provides direct control over every signal on the channel 28 at every clock edge of channel 28.

Referring now to FIG. 7, a block diagram of one embodiment of a RIMM tester implementing the channel controller bypass is depicted. Input registers 64 of ASIC 30 receive information from test transaction engine 12, and the content of registers 64 may then be presented through channel controller 34 to RAC 32 or directly to RAC 32. If the test information is presented through channel controller 34, then channel controller 34 has the burden of issuing RAMBUS instructions, with a format and timing appropriate for the RIMM in DUT 26. If channel controller 34 is bypassed, then test transaction engine 12 provides data to drive RAC 32, such as transaction vectors and their related timing requirement, while channel controller 34 clocks return data from RAC 32. Bypassing channel controller 34 increases the complexity of the instructions of test transaction engine 12, and thus the software that generates the instructions.

However, bypassing channel controller 34 allows greater control by test transaction engine 12 since channel controller 34 tends to select certain fixed methods for accomplishing memory operations and may not allow testing of certain unique sequences of commands.

Essentially, the components of the RIMM tester with a bypass circuit are functionally equivalent to like components discussed previously, however, in some instances, the test transaction engine communicates directly with RAC 32, bypassing channel controller 34. Host 24 downloads a high-level memory test algorithm which provides for variable assignments, arithmetic operations, looping, procedures, and flow control as well as access to specific command structures to a sequencer 56 through a portion of the SRAM 54. To enable direct communication with RAC 32, address control engine 62 provides 64 bit commands through registers 64 to RAC 32 in conjunction with 144 bit data. Thus, in summary, test transaction engine 12 provides information to RAC 32 on ASIC 30 in the same format as the data would have been provided if the data had come from channel controller 34.

To allow a comparison of the written data against subsequently read data, SPAM 54 provides very long instruction word (VLIW) instructions to sequencer 56. Sequencer 56 then provides the instructions to the address control engine 62, read/compare engine 58 and write engine 60, which use the instructions to generate the 64 bit commands and 144 bit data for writing through RAC 32. The address/control engine 62, read/compare engine 58 and write engine 60 generate command, data, timing and address sequences for ASIC 30 and for comparison of data read through RAC 32. Thus, the same instructions may be used to generate write data as are used to generate read compare data.

In bypass mode, the output of address/control engine 62 is generally a sequence of RAC packet commands with associated timing information. For instance, RAC 32 may support ROW packets having three bytes of information and COL packets having five bytes of information. The packet commands are generally transmitted as a group of eight bytes at a 100 MHz rate, although some packets may not have valid data. To provide additional scheduling flexibility, packets within each group of eight bytes, as well as data reads and writes, may be scheduled at 2.5 nS increments within the 10 nS clock period. Timing offset information provided via the VLIW command word provides 8 bits of offset information with 2 bits each corresponding to four offset times for a row packet, a column packet, write data, and read data.

In FIG. 7, vector, OP code & address and write mask paths have a total of 64 bits that represent packet data, although an application of names to specific pins is somewhat artificial since the signal on any given pin depends on the particular mode and format of the current packet. Generally, however, the write mask path outputs 16 bits worth of data for either a COLM or COLX packet when in the vector mode of bypassing channel controller 34, and outputs a write mask when in the standard mode of processing instructions through channel controller 34. The OP code and address path provides 35 bits of address information, four op code bits and one bit of packet length when data is passed through channel controller 34. In the vector mode of bypassing channel controller 34, the 40 bits of path associated with OP code and address are combined with the 8 bits of path associated with the vector path and the 16 bits of path associated with the write mask to provide a 64 bit path to pass eight bytes of packet information. Note that, although FIG. 7 depicts one embodiment of a bypass circuit, in yet another embodiment, test transaction 12 can perform all of the functions of channel controller 34, thus eliminating the need for a channel controller on ASIC 30.

Referring now to FIG. 8, a flow diagram depicts one possible test flow for a RIMM associated with RIMM adapter 10. At step 150, the connectivity of all RIMM input and output signals and voltages is performed before power is applied to the RIMM under test. At step 152, quiescent RIMM power consumption is verified. At step 154, access to all RDRAMS on the RIMM is verified, with initialization performed by the CMOS serial bus. At step 156, all RDRAMs on the RIMM are verified as able to detect unique patterns on the row, column and data DQ[AB] buses, including refresh and current control performed at predetermined intervals. Upon completion of step 156, the basic connectivity of the RDRAMs on the RIMM is verified.

At step 158, the voltage levels on the data DQ[AB] signals are verified during burst reads of each RDRAM on the RIMM. At step 160, write and read verification is accomplished for all cells in each RDRAM on the RIMM. Write and read verification includes worst-case condition testing under different voltage, loading and timing conditions. Pattern sensitivity tests are also accomplished if necessary. Refresh and current control are accomplished at predetermined intervals. At step 162, each channel transaction required for the target application is performed and validated. At step 164, the RIMM SPD EEPROMs are programmed and verified.

Although the present invention has been described in detail, it should be understood that various changes, substitutions and alterations can be made thereto without departing from the spirit and scope of the invention as defined by the appended claims. 

What is claimed is:
 1. An application specific integrated circuit for communicating test data between a test transaction engine and a RIMM associated with a RAMBUS Channel, comprising: a RAMBUS ASIC Channel cell for providing test data to a RAMBUS channel and accepting test data from the RAMBUS channel; a channel controller interfaced with the RAMBUS ASIC Channel cell, the channel controller for controlling the writing and reading of test data by the RAMBUS ASIC Channel cell; a control interface circuit interfaced with the channel controller, the control interface circuit for accepting test control data from the test transaction engine; and at least one first-in-first-out circuit interfaced with the channel controller, the first-in-first-out circuit for accepting test data from the test transaction engine and providing test data to the test transaction engine, the at least one first-in-first-out circuit comprising: a write first-in-first-out circuit for accepting test write data from the test transaction engine; a read first-in-first-out circuit for providing test read data to the test transaction engine.
 2. The application specific integrated circuit according to claim 1 further comprising registers interfaced with the channel controller, the registers for accepting test transaction commands for modifying operational characteristics of the channel controller.
 3. The application specific integrated circuit according to claim 1 wherein the read first-in-first-out circuit provides 144 bit wide read test data.
 4. The application specific integrated circuit according to claim 1 wherein the write first-in-first-out circuit accepts first and second 144 bit wide datums for each test data transaction.
 5. The application specific integrated circuit according to claim 1 wherein the address first-in-first-out circuit accepts 35 bit address information for each RIMM transaction.
 6. A system for testing a RIMM, the system comprising: a test transaction engine for generating and reading test transaction data to test the operation of the RIMM, the test transaction engine comprising: instruction memory for storing test transaction instructions; a write generate engine interfaced with the instruction memory, the write generate engine for generating test write data from the test transaction instructions; and an address control generate engine interfaced with the instruction memory, the address control generate engine for generating test address data and test control data from the transaction instructions; and A RIMM adapter interfaced with the test transaction engine, the RIMM adapter for communicating test transaction data between the test transaction engine and the RIMM.
 7. The system according to claim 6 wherein the test transaction data comprises test address, control and write data.
 8. The system according to claim 6 wherein the RIMM adapter comprises an ASIC having a RAMBUS ASIC Channel cell and a channel controller.
 9. The system according to claim 6 wherein the test transaction engine comprises a write data path for providing test write data to the RIMM adapter, and a read data path for accepting test read data from the RIMM adapter.
 10. The system according to claim 6 further comprising a read compare engine for accepting test read data from the RIMM adapter and comparing the test read data against test write data to determine RIMM results.
 11. The system according to claim 10 wherein the read compare engine comprises a write generate engine for generating test write data from the test transaction instructions.
 12. The system according to claim 10 wherein the write generate engine and read compare engine interface with the RIMM adapter through separate data paths.
 13. The system according to claim 6 wherein the address control generate engine comprises: at least one field programmable gate arrays, the field programmable gate array having at least one arithmetic logic unit for generating test data; and plural interleaved banks of plural registers, the registers for providing test address or control data to the RIMM adapter.
 14. The system according to claim 6 wherein the read compare engine comprises a field programmable gate array.
 15. The system according to claim 6 wherein the write generate engine comprises a field programmable gate array.
 16. The system according to claim 6 further comprising: a write first-in-first-out circuit interfacing the write generate engine and the RIMM adapter; and an address first-in-first-out circuit interfacing the address control generate engine and the RIMM adapter.
 17. The system according to claim 16 further comprising an address cross-bar switch interfaced with the address first-in-first-out circuit for sequencing test addresses generated by the address control generate engine.
 18. The system according to claim 10 further comprising a read first-in-first-out circuit interfacing the read compare engine and the RIMM adapter.
 19. A method for testing a RIMM comprising the steps of: generating test transaction information by providing instructions to a write generate engine to algorithmically generate test write data; providing the test transaction information to the RIMM through a RIMM adapter for storage on the RIMM, RIMM adapter comprising an application specific integrated circuit having a RAMBUS ASIC channel cell and a channel controller; reading the stored test transaction information from the RIMM through the RIMM adapter; and comparing the test transaction information read from the RIMM against predetermined results to determine the operational status of the RIMM.
 20. The method according to claim 19 wherein the providing the test transaction data to the RIMM step further comprises the steps of: providing the test write data to the channel controller; and using the channel controller to direct the RAMBUS ASIC channel cell to send the test write data to the RIMM.
 21. The method according to claim 20 further comprising the step of providing predetermined test write data to the RIMM by bypassing the channel controller.
 22. The method according to claim 20 wherein the test transaction information further comprises test address information and test control information, the using the channel controller step further comprising the step of using the channel controller to store the test write data on the RIMM according to the test address information and test control information.
 23. The method according to claim 22 wherein the providing test transaction information step further comprises the steps of: providing test write data to a write first-in-first-out circuit interfaced with the channel controller; providing the test address information to an address first-in-first-out circuit interfaced with the channel controller; providing the test control information to a control first-in-first-out circuit interfaced with the channel controller; and accessing the write, address and control first-in-first-out circuits with the channel controller to provide the test write data to the RIMM.
 24. The method according to claim 19 wherein the comparing step further comprises the step of generating read compare test data with the instructions and a read compare engine for comparison with the data read from the RIMM.
 25. The method according to claim 19 wherein the test transaction information is provided to the RIMM adapter and read from the RIMM adapter through separate paths. 